package day0113;

//方法重写： 子类对父类的方法进行重写。
abstract class Bird{
    protected Object eat(){
        return 1;
    }

    void fly(){
        System.out.println("飞行方法");
    }
}

class Owl extends Bird{
    //子类子类对父类的方法进行重写，
    // 1.名字和参数都相同。   两同
    // 2.两个方法的返回值如果是基本类型，则必须相同  一小
    //   两个方法的返回值如果是引用类型，子类方法的返回值类型可以小于等于父类方法的返回值类型
    // 3.子类方法的访问权限可以大于等于父类方法的访问权限  一大
    public Integer eat(){
        System.out.println("猫头鹰抓老鼠吃");
        return 3;
    }

    //方法重载：同一个类中，两个方法名字相同，参数不相同。 和返回值类型 访问控制修饰符没关系。
    //不满足方法重载的要求： 方法重载不能通过参数名称区分(可以通过参数的顺序来区分)。
    public Integer eat(String food){
        System.out.println("猫头鹰吃" + food);
        return 3;
    }

    public void eat(double weight,String food){
        System.out.println("猫头鹰吃" + food);
    }

    public Integer eat(String food,double weight){
        System.out.println("猫头鹰吃" + food);
        return 3;
    }

    Owl(){}
    Owl(int age, String name){}
    Owl(String name,int age){}
    //Owl(String n,int a){}

    void fly(double miles){
        System.out.println("飞行方法");
    }

}




public class Test1 {
}
